﻿using System.Collections.Generic;
using BusinessObjects.Report;

namespace DataObjects.StandartInterfaces.Report
{
    /// <summary>
    /// Defines methods to access Report Group
    /// </summary>
    /// <remarks>
    /// This is a database-independent interface. Implementations are database specific
    /// </remarks>
    public interface IReportGroupDao
    {
        /// <summary>
        /// Gets the report group.
        /// </summary>
        /// <param name="reportGroupId">The report group identifier.</param>
        /// <returns></returns>
        ReportGroup GetReportGroup(long reportGroupId);


        /// <summary>
        /// Gets the report groups.
        /// </summary>
        /// <returns></returns>
        List<ReportGroup> GetReportGroups();

        /// <summary>
        /// Gets the paged.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>
        /// <param name="currentPage">The current page.</param>
        /// <returns></returns>
        List<ReportGroup> GetPaged(int unitId, int currentPage);

        /// <summary>
        /// Gets the size of the page.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>
        /// <returns></returns>
        int GetPageSize(int unitId);
        /// <summary>
        /// Inserts the report group.
        /// </summary>
        /// <param name="reportGroup">The report group.</param>
        string InsertReportGroup(ReportGroup reportGroup);

        /// <summary>
        /// Updates the report group.
        /// </summary>
        /// <param name="reportGroup">The report group.</param>
        string UpdateReportGroup(ReportGroup reportGroup);

        /// <summary>
        /// Deletes the report group.
        /// </summary>
        /// <param name="reportGroup">The report group.</param>
        string DeleteReportGroup(ReportGroup reportGroup);
    }
}
